//
// Created by Administrator on 2023/11/4.
//

#include <iostream>
using namespace std;

int ones(int n)
{
    int ret=0;
    while(n)
    {
        int nn = (n&-n);
        n-=nn;
        ++ret;
    }
    return ret;
}

int main()
{
    int n = 8;
    // (n&-n) 会获得 n的最后一位1
    // 比如78=1001110, (78&-78)=2 也就是二进制的10
    // 78-2就去掉了最后一位的1
    //通过多次去掉1 直到n=0 去掉的次数就是n包含1的次数
    int nn = n-(n&-n);
//    cout<<(nn&-nn)<<endl;
    cout<<ones(n)<<endl;
    return 0;
}